package likong.bibliothek.pages.buch.authorpanel;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.util.ListModel;
import org.hibernate.Session;

import likong.bibliothek.obj.Autor;
import likong.bibliothek.obj.Buch;
import likong.bibliothek.obj.Language;
import likong.bibliothek.obj.Spender;
import likong.bibliothek.pages.buch.BuecherEdit;
import likong.bibliothek.pages.buch.BuecherLoeschen;

import db.HibernateHelper;

public class AutorAddPanel extends Panel {
	private static final long serialVersionUID = 1L;

	public AutorAddPanel(String id, final IModel<Buch> model) {
		super(id);
		Session session = HibernateHelper.getSessionFactory()
				.getCurrentSession();
		session.beginTransaction();
		
		// Dem Buch zugeordnete Autoren
		List<Autor> list = new ArrayList<Autor>(model.getObject().getAuthor());
		

		// Alle Autoren
		List<Autor> autor = session.createQuery("from Autor").list();

		session.close();

		// Bereits hinzugefügte Autoren ausgeben
		final PropertyListView<Autor> view = new PropertyListView<Autor>(
				"autorShow", list) {
			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(ListItem<Autor> item) {
				item.add(new Label("name"));
			}

		};
		add(view);

		final DropDownChoice<Autor> dropdown = new DropDownChoice<Autor>(
				"autorSelect", new Model<Autor>(), new ListModel<Autor>(
						autor), new ChoiceRenderer<Autor>("name", "authorID"));

		// Nur Hilfsformular, daher findet Speicherung nur im Model statt!
		Form<Buch> authorForm = new Form<Buch>("form", model) {
			private static final long serialVersionUID = 1L;

			protected void onSubmit() {
				if (dropdown.getModelValue().equals("-1"))
					return; // Nichts ausgewählt --> Abbruch

				Autor selAutor = HibernateHelper.retrieveObject(Autor.class, Integer.parseInt(dropdown
						.getModelValue()));

				Set<Autor> a = model.getObject().getAuthor();
				if (!a.contains(selAutor)) {
					a.add(selAutor);
				}
				view.setModelObject(new ArrayList<Autor>(a));
				// Default-Auswahl einsetzen
				dropdown.setModel(new Model<Autor>());
			}
		};

		// Dropdown, mit dem neue Autoren hinzugefügt werden.

		authorForm.add(dropdown);
		authorForm.add(new Button("buttonLabel",
				new Model<String>("Hinzufügen")));

		add(authorForm);

	}

}
